﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

namespace Avanservices.ControlPanel
{
    public partial class buscador : System.Web.UI.UserControl
    {
        Variables var;

        protected void Page_Load(object sender, EventArgs e)
        {
            var = (Variables)(Session["Variables"]);

            DataSet DS = new DataSet();
            AccesoDatos.clsBuscador buscador = new AccesoDatos.clsBuscador();
            DS = buscador.ObtenerParametros(var.linkUsuario);

            string objeto = "";
            string[] objetoTemp;

            if (Request.Params["__EVENTTARGET"] != "" && Request.Params["__EVENTTARGET"] != null)
            {
                objetoTemp = Request.Params["__EVENTTARGET"].ToString().Split('$');
                objeto = objetoTemp[objetoTemp.Length - 1];
            }

            int I = 0;
            TableRow fila = new TableRow();           

            foreach (DataRow parametro in DS.Tables[0].Rows)
            {
                if((I % 3) == 0)
                    fila = new TableRow();
                
                switch (parametro["Tipo"].ToString()) 
                {
                    case "string" :
                        {
                            TableCell celdaLabel = new TableCell();
                            celdaLabel.Text = parametro["Nombre"].ToString();
                            celdaLabel.CssClass = "texto7";
                            TableCell celdadato = new TableCell();
                            TextBox dato = new TextBox();
                            dato.ID = parametro["Campo"].ToString() + I;
                            dato.CssClass = "texto7";
                            celdadato.Controls.Add(dato);
                            fila.Cells.Add(celdaLabel);
                            fila.Cells.Add(celdadato);
                            break;                         
                        }
                    case "int":
                        {
                            TableCell celdaLabel = new TableCell();
                            celdaLabel.Text = parametro["Nombre"].ToString();
                            celdaLabel.CssClass = "texto7";
                            TableCell celdadato = new TableCell();
                            TextBox dato = new TextBox();
                            dato.ID = parametro["Campo"].ToString() + I;
                            dato.CssClass = "texto7";
                            celdadato.Controls.Add(dato);
                            fila.Cells.Add(celdaLabel);
                            fila.Cells.Add(celdadato);
                            break;
                        }
                    case "list":
                        {
                            TableCell celdaLabel = new TableCell();
                            celdaLabel.Text = parametro["Nombre"].ToString();
                            celdaLabel.CssClass = "texto7";
                            TableCell celdadato = new TableCell();
                            DropDownList dato = new DropDownList();
                            dato.ID = parametro["Campo"].ToString() + I;
                            dato.DataSource = buscador.ObtenerLista(parametro["Valor"].ToString());
                            dato.CssClass = "texto7";
                            dato.DataValueField = "Id";
                            dato.DataTextField = "Nombre";
                            dato.DataBind();
                            ListItem item = new ListItem();
                            item.Text = "<-- Seleccione un Item -->";
                            item.Value = "0";
                            dato.Items.Insert(0, item);
                            celdadato.Controls.Add(dato);
                            fila.Cells.Add(celdaLabel);
                            fila.Cells.Add(celdadato);                            
                            break;
                        }
                    case "date":
                        {
                            TableCell celdaLabel = new TableCell();
                            celdaLabel.Text = parametro["Nombre"].ToString();
                            celdaLabel.CssClass = "texto7";
                            TableCell celdadato = new TableCell();
                            TextBox dato = new TextBox();
                            dato.ID = parametro["Campo"].ToString() + I;
                            dato.CssClass = "texto7";
                            dato.Text = "";
                            //dato.ReadOnly = true;  
                            RJS.Web.WebControl.PopCalendar calendario = new RJS.Web.WebControl.PopCalendar();
                            calendario.ID = "calendario1" + I;
                            calendario.Control = dato.ID;
                            celdadato.Controls.Add(dato);
                            fila.Cells.Add(celdaLabel);
                            fila.Cells.Add(celdadato);
                            TableCell celdacalendario = new TableCell();
                            celdacalendario.Controls.Add(calendario);
                            fila.Cells.Add(celdacalendario);
                            break;
                        }
                }
                Table1.Rows.Add(fila);
                I++;
            }

            if (I == 0)
            {
                TablaBuscadorOff.Attributes.Add("style", "display:none;");
                TablaBuscadorOn.Attributes.Add("style", "display:none;");
            }

            //si le damos al boton buscar
            if (objeto == "lnkBuscar")
            {                
                string where = "";
                int J = 0;

                foreach (DataRow parametro in DS.Tables[0].Rows)
                {
                    string campo = Request.Form["ctl00$Buscador$" + parametro["Campo"].ToString() + J];
                    switch (parametro["Tipo"].ToString())
                    {
                        case "list":
                            {
                                if (campo != "0")
                                {
                                    where += " AND " + parametro["Campo"].ToString() + parametro["Operador"].ToString() + "'" + campo + "' ";
                                }
                                break;
                            }
                        case "date":
                            {
                                if (campo != "")
                                {
                                    where += " AND " + parametro["Campo"].ToString() + parametro["Operador"].ToString() + "convert(datetime, '" + campo +"', 103) ";
                                }
                                break;
                            }
                        default:
                            {
                                if (campo != "")
                                {
                                    if (parametro["Operador"].ToString() == "like")
                                        where += " AND " + parametro["Campo"].ToString() + " " + parametro["Operador"].ToString() + "'%" + campo + "%' ";
                                    else
                                        where += " AND " + parametro["Campo"].ToString() + parametro["Operador"].ToString() + "'" + campo + "' ";
                                }
                                break;
                            }
                    }
                    J++;
                }

                if (where != "")
                    var.Where = where;
                else
                    var.Where = "";
                
                Session["Variables"] = var;
            }
        }    
        
    }
}